package com.microlearning.common.rabbitmq.publisher;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Fanout(广播)交换机：将消息交给所有绑定到交换机的队列
 * 特点：
 *      1、可以有多个队列
 *      2、每个队列都要绑定交换机
 *      3、生产者发送消息，只能发送到交换机
 *      4、交换机把消息发送给绑定的所有队列
 *      5、订阅队列的消费者都能拿到消息
 */
@Service
public class FanoutPublisher {

    RabbitTemplate rabbitTemplate;

    @Autowired
    public FanoutPublisher(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }

    /**
     * 交换机名称
     */
    static String exchangeName = "mic.fanout";
    /**
     * 消息内容
     */
    static String message = "mic.helloFanout";

    /**
     * 发送消息到交换机
     */
    public void pushMessage(String exchangeName, String message) {
        rabbitTemplate.convertAndSend(exchangeName, "", message);
    }

}
